package com.atguigu.boot04.controller;

import com.atguigu.boot04.bean.Admin;
import com.atguigu.boot04.bean.User;
import com.atguigu.boot04.service.AdminService;
import com.sun.tools.javac.Main;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.Banner;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;

/**
 * @author:朱思博
 * @date:2021/5/5-{20:08}   登录相关
 */
@Controller
public class IndexController {
    // 前往登录页
    @GetMapping(value = {"/","/login"})
    public String toLoginPage() {
        return "login";
    }

    // 登录，前往主页
    @PostMapping("/login")
    public String login(User user, HttpSession session, Model model) {

        if(
                !StringUtils.isEmpty(user.getUserName())
//                &&
//                !StringUtils.isEmpty(user.getPassWord())
        ) { // 登陆成功
            // 将登录成功的user对象存入session域中
            session.setAttribute("loginUser",user);
        }else { // 登陆失败
            // 存储错误信息
            model.addAttribute("msg","账号或密码错误");
            return "login";
        }

        // 这里是转发方式，所以每次刷新都会重复提交表单
        // 登录成功重定向到主页
        return "redirect:/main.html";
    }


    // 再写一个方法解决表单重复提交
    // 注意：重定向到templates包下的资源要经过视图解析器处理，而重定向默认是不会经过视图解析器的
    @GetMapping("/main.html")
    public String login2(HttpSession session,Model model) {

        // 是否登录,用了拦截器，所以注释
//        Object user = session.getAttribute("loginUser");
//        if (user != null) {
//            return "main";
//        }else {
//            model.addAttribute("msg","请先登录");
//            return "login";
//        }

        return "main";
    }


    @Autowired
    AdminService adminService;

    @ResponseBody
    @GetMapping("/admin")
    public Admin getAdminById(Integer id) {

        return adminService.getAdminById(id);
    }
}
